package com.yw.pms.controller;

import java.util.List;

import javax.annotation.Resource;
import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.yw.pms.dao.entity.Operator;
import com.yw.pms.dao.entity.ProblemType;
import com.yw.pms.service.ProblemTypeService;
import com.yw.pms.utils.CommonResp;

/**
 * @Description: 问题类型管理控制器
 * @author Tenny.Tang
 * @date 2017年12月22日 下午3:06:05
 */
@Controller
@RequestMapping("/problemType")
public class ProblemTypeController {

	@Resource
	private ProblemTypeService problemTypeService;
	
	/**
	 * @Description 跳转到添加问题类型界面
	 * @author Tenny.Tang
	 * @date 2017年12月27日 下午3:00:01
	 */
	@RequestMapping("/toAddProblemTypePage")
	String toAddProblemTypePage() {
		return "addProblemType";
	}
	
	/**
	 * @Description 跳转到问题类型列表页
	 * @author Tenny.Tang
	 * @date 2017年12月27日 下午3:00:01
	 */
	@RequestMapping("/toProblemTypePage")
	String toProblemTypePage() {
		return "problemType";
	}
	
	@RequestMapping(value = "/addProblemType", method = RequestMethod.POST)
	@ResponseBody
	CommonResp<Boolean> addProblemType(ProblemType problemType, HttpSession session) {
		Operator operator = getOperator(session);
		problemType.setOperatorId(operator.getId());
		return problemTypeService.addProblemType(problemType);
	}
	
	/**
	 * @Description: 问题类型列表查询
	 * @author Tenny.Tang
	 * @date 2017年12月27日 下午3:00:01
	 */
	@RequestMapping("/problemTypeList")
	@ResponseBody CommonResp<List<ProblemType>> problemTypeList(ProblemType problemType){
		return problemTypeService.queryProblemTypeList(problemType);
	}
	
	/**
	 * @Description: 删除问题类型
	 * @author Tenny.Tang
	 * @date 2017年12月27日 上午10:00:01
	 */
	@RequestMapping("/deleteProblemType")
	@ResponseBody
	CommonResp<Boolean> deleteProblemType(String id) {
		return problemTypeService.deleteProblemType(id);
	}
	
	/**
	 * @Description: 根据id获取问题类型
	 * @author Tenny.Tang
	 * @date 2017年12月27日 上午10:00:01
	 */
	@RequestMapping("/getProblemTypeById")
	@ResponseBody
	CommonResp<ProblemType> getProblemTypeById(String id) {
		return problemTypeService.get(id);
	}
	
	/**
	 * @Description: 跳转到更新问题类型页面
	 * @author Tenny.Tang
	 * @date 2017年12月27日 上午10:23:41
	 */
	@RequestMapping("/gotoUpdateProblemType")
	String gotoUpdate(String id,Model model,HttpSession session){
		CommonResp<ProblemType> resp = problemTypeService.get(id);
		if(resp.isSuccess()) {
			model.addAttribute("problemType", resp.getData());
		}
		Operator operator= getOperator(session);
		model.addAttribute("operator", operator);
		return "updateProblemType";
	}
	
	/**
	 * @Description: 更新问题类型页面
	 * @author Tenny.Tang
	 * @date 2017年12月27日 上午14:23:41
	 */
	@RequestMapping("/updateProblemType")
	@ResponseBody CommonResp<Boolean> updateProblemType(ProblemType problemType){
		return problemTypeService.updateProblemType(problemType);
	}
	
	/**
	 * 
	 * @Description: 验证问题类型名称的唯一性
	 * @author Tenny.Tang
	 * @date 2017年12月27日 上午10:53:41
	 */
	@RequestMapping(value="/isProblemTypeNameUniq",method=RequestMethod.POST)
	@ResponseBody CommonResp<Boolean> isProblemTypeNameUniq(String problemTypeName, String productId){
		return problemTypeService.isProblemTypeNameUniq(problemTypeName, productId);
	}
	
	private Operator getOperator(HttpSession session) {
		Operator operator = (Operator) session.getAttribute("operator");
		return operator;
	}
}
